星巡研究院

渗透视角下的C语言

``` #include <sys/capability.h> #include <stdio.h> int main(void) { cap_t c = cap_get_proc(); /* 底层capget rax=125,读当前能力集 */ if (c == NULL) { perror("cap_get_proc"); return 1; } char *text = cap_to_text(c, NULL); /* 用户态转可读字符串 */ printf("当前能力: %s\n", text); cap_free(text); cap_free(c); return 0; } ``` 链路:`cap_get_proc()` → glibc/libcap 置 `rax=125`(capget),内核从进程凭证结构读出三个能力集。`cap_set_proc()` 置 `rax=126`(capset),内核校验调用方是否允许后写入。能力位生效发生在对应系统调用的检查点,例如 `CAP_NE
这是进阶内容

升级理论包获取本册全部章节,从机器本质系统入门